//////////////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2014-present, Egret Technology.
//  All rights reserved.
//  Redistribution and use in source and binary forms, with or without
//  modification, are permitted provided that the following conditions are met:
//
//     * Redistributions of source code must retain the above copyright
//       notice, this list of conditions and the following disclaimer.
//     * Redistributions in binary form must reproduce the above copyright
//       notice, this list of conditions and the following disclaimer in the
//       documentation and/or other materials provided with the distribution.
//     * Neither the name of the Egret nor the
//       names of its contributors may be used to endorse or promote products
//       derived from this software without specific prior written permission.
//
//  THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
//  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
//  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
//  IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
//  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
//  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,
//  OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
//  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
//  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
//  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//
//////////////////////////////////////////////////////////////////////////////////////

class Main extends eui.UILayer {


    protected createChildren(): void {
        super.createChildren();
        StageUtils.init();
        egret.lifecycle.addLifecycleListener((context) => {
            // custom lifecycle plugin
        })

        egret.lifecycle.onPause = () => {
            // egret.ticker.pause();
        }

        egret.lifecycle.onResume = () => {
            // egret.ticker.resume();
        }

        //inject the custom material parser
        //注入自定义的素材解析器
        let assetAdapter = new AssetAdapter();
        egret.registerImplementation("eui.IAssetAdapter", assetAdapter);
        egret.registerImplementation("eui.IThemeAdapter", new ThemeAdapter());
        // if (egret.Capabilities.runtimeType == egret.RuntimeType.RUNTIME2) {
        //     egret.TextField.default_fontFamily = `${DEFAULT_FONT}`
        // }
        // let img:eui.Image = new eui.Image("http://yidianhaoranqi.top/resource/assets/bg.jpg")
        // img.left = 0;
        // img.top = 0;
        // img.right = 0;
        // img.bottom = 0;
        // this.addChild(img);
        wx.showToast({
            title:"加载中",
            icon:"loading",
            image:"http://yidianhaoranqi.top/resource/assets/bg.jpg"
        })
        wx.getSystemInfo({
            success:(res:wx.systemInfo)=>{
                
                let button = wx.createUserInfoButton({
                type: 'text',
                text: '获取用户信息',
                style: {
                    left: res.screenWidth/2 - 100,
                    top: res.screenHeight/2,
                    width: 200,
                    height: 40,
                    lineHeight: 40,
                    backgroundColor: '#f7f7f7',
                    color: '#000000',
                    textAlign: 'center',
                    fontSize: 16,
                    borderRadius: 4
                }
                })
                button.onTap((res) => {
                    button.destroy();
                    if(res.signature != "" && res.userInfo && res.userInfo.nickName)
                    {
                        this.runGame().catch(e => {
                            console.log(e);
                        })
                    }
                    
                })
            },
            fail:()=>{

            },
            complete:()=>{

            }
        });
        
        

        
        // window["payCallBack"] = GlobalFun.payCallBack;
    }

    private async runGame() {
        await this.loadResource()
        this.createGameScene();
        const result = await RES.getResAsync("description_json")
        this.startAnimation(result);
        await platform.login();
        const userInfo = await platform.getUserInfo();
        console.log(userInfo);

    }

    private async loadResource() {
        try {
            
            await RES.loadConfig("default.res.json", "http://yidianhaoranqi.top/resource/");
            // await RES.loadConfig("resource/default.res.json", "resource");
            await this.loadTheme();
            this.stage.addChild(LoadingUI.inst());
            await RES.loadGroup("preload", 0,LoadingUI.inst());
        }
        catch (e) {
            console.error(e);
        }
    }

    private loadTheme() {
        return new Promise((resolve, reject) => {
            // load skin theme configuration file, you can manually modify the file. And replace the default skin.
            //加载皮肤主题配置文件,可以手动修改这个文件。替换默认皮肤。
            let theme = new eui.Theme("resource/default.thm.json", this.stage);
            theme.addEventListener(eui.UIEvent.COMPLETE, () => {
                resolve();
            }, this);

        })
    }
    private textfield: egret.TextField;
    /**
     * 创建场景界面
     * Create scene interface
     */
    protected createGameScene(): void {
        eui.Button.prototype["autoSize"] = eui.Image.prototype["autoSize"] = eui.Rect.prototype["autoSize"] = eui.Group.prototype["autoSize"]= function(){
            let precentw:number = StageUtils.inst().getWidth()/1136;
		    let precenth:number = StageUtils.inst().getHeight()/640;
            this.scaleX = this.scaleY = precentw
            this.x *= precentw;
            this.y *= precenth;
        }
        eui.Rect.prototype["changeSize"] = function(){
            let precentw:number = StageUtils.inst().getWidth()/1136;
		    let precenth:number = StageUtils.inst().getHeight()/640;
            this.width *= precentw;
            this.height *= precenth;
            this.x *= precentw;
            this.y *= precenth;
        }

        // egret.localStorage.clear();
        //获取平台参数;
        let platform_param:string = GlobalFun.getOption("pf");
        if(!platform){
            GameConfig.platform.setting = "ios"
        }else{
            GameConfig.platform.setting = platform_param;
        }
        let bg:eui.Image = new eui.Image();
        GameApp.inst().refreshTimespan();
        LayerManager.inst().iniaizlize(this);
        GameApp.inst().load();
        // let data = RES.getRes("config_zip");
        // JSZip.loadAsync(data).then((zipdata) => {
        //     return zipdata.file('config.json').async('text');
        // }).then(text => {
        //     GlobalConfig.setData(JSON.parse(text));
        //     GameApp.inst().load();
        // })
    }
    /**
     * 描述文件加载成功，开始播放动画
     * Description file loading is successful, start to play the animation
     */
    private startAnimation(result: Array<any>): void {
       
    }
}
